class Solution
{
public:
    int subarraySum(vector<int>& nums, int k)
    {
        int ans = 0, s = 0;
        unordered_map<int, int> cnt{ {0, 1} };
        for (int x : nums)
        {
            s += x;
            ans += cnt.contains(s - k) ? cnt[s - k] : 0;
            cnt[s]++;
        }
        return ans;
    }
};